package daoImpl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jdom.Element;

import utils.XmlDefault;
import bean.Equipe;
import dao.EquipeDao;

public class EquipeDaoImpl extends XmlDefault implements EquipeDao {
	
	public EquipeDaoImpl(String nomFichier) {
		super(nomFichier);
	}
	public EquipeDaoImpl(){
		super("src/xml/equipe.xml");
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	@Override
	public Equipe getEquipe(int id) {
		List<Element> resultat = getRacine().getChildren("equipe");
		Iterator i = resultat.iterator();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			if(courant.getChild("id").getText().equals(String.valueOf(id)))
				return new Equipe(id,courant.getChild("nom").getText(),courant.getChildText("club"));
		}
		return null;
	}

	@Override
	@SuppressWarnings("rawtypes")
	public int setEquipe(String nom, String club) {
		List resultat = getRacine().getChildren("equipe");
		Element element = (Element) resultat.get(resultat.size()-1);
		int identifiant = Integer.parseInt(element.getChild("id").getText());
		Element racine = new Element("equipe");
		Element id = new Element("id");
		id.setText(String.valueOf(identifiant+1));
		racine.addContent(id);
		Element elementNom = new Element("nom");
		elementNom.setText(nom);
		racine.addContent(elementNom);
		Element elementClub = new Element("club");
		elementClub.setText(club);
		racine.addContent(elementClub);
		getRacine().addContent(racine);
		save();
		return ++identifiant;
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public List<Equipe> getAll() {
		List<Element> resultat = getRacine().getChildren("equipe");
		Iterator i = resultat.iterator();
		List<Equipe> equipe = new ArrayList<Equipe>();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			equipe.add(new Equipe(Integer.parseInt(courant.getChildText("id")),courant.getChildText("nom"),courant.getChildText("club")));
		}
		return equipe;
	}
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public List<Equipe> getAllByClub(String club) {
		List<Element> resultat = getRacine().getChildren("equipe");
		Iterator i = resultat.iterator();
		List<Equipe> equipe = new ArrayList<Equipe>();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			if(courant.getChildText("club").equals(club))
				equipe.add(new Equipe(Integer.parseInt(courant.getChildText("id")),courant.getChildText("nom"),courant.getChildText("club")));
		}
		return equipe;
	}
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public List<Equipe> getAllByNom(String nom) {
		List<Element> resultat = getRacine().getChildren("equipe");
		Iterator i = resultat.iterator();
		List<Equipe> equipe = new ArrayList<Equipe>();
		while(i.hasNext()){
			Element courant = (Element)i.next();
			if(courant.getChildText("nom").equals(nom))
				equipe.add(new Equipe(Integer.parseInt(courant.getChildText("id")),courant.getChildText("nom"),courant.getChildText("club")));
		}
		return equipe;
	}
}
